//对于对顶堆，我们可以用两个优先队列来表示两个堆。而他所维护的，我们可以看成一个单调的序列
//这时，我们对两个队列的队列元素数量进行维护（把队首从一个队列中弹出来，加入到另一个队列），那么就可以实现在每次查询第k大/第k小数时，直接访问其中一个队列的队首元素就可以了的。

//对于前奇数项求中位数。
priority_queue<int>bigheap;
priority_queue<int,vector<int>,greater<int>>smallheap;
for(int i = 1;i<=n;i++)
{
    if(smallheap.empty() || arr[i]>=smallheap.top())
    {
        smallheap.push(arr[i]);
    }
    else
    {
        bigheap.push(arr[i]);
    }
    while (smallheap.size() < (i+1) / 2 && i % 2 == 1)
    {
        smallheap.push(bigheap.top());
        bigheap.pop();
    }
    while(smallheap.size() > (i + 1) / 2 && i % 2 == 1)
    {
        bigheap.push(smallheap.top());
        smallheap.pop();
    }
    if(i % 2 == 1)
    {
        cout<<smallheap.top()<<endl;
    }
}